package com.hmdp.utils;



import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.hmdp.dto.UserDTO;
import com.hmdp.entity.User;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Map;
import java.util.concurrent.TimeUnit;

public class LoginInterceptor implements HandlerInterceptor {



    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        /**
          1.判断是否需要拦截对象，因为我们设置了两个拦截器，第一个负责大部分的工作，包括判断用户，刷新token和把token放入这一个请求的线程当中
        这个同一个线程，在web后端中就相当于一次请求，这个请求过来之后，后端的关于这个请求的一系列操作和方法都属于这个线程。
         **/
        if (UserHolder.getUser()==null){
            //没有，需要拦截
            response.setStatus(401);
            //拦截
            return false;
        }

        //有用户，则放行
        return true;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //移除用户
        UserHolder.removeUser();
    }
}
